package main

import (
	"context"
	"fmt"
	"github.com/go-redis/redis/v8"
)

var rdb *redis.Client

func init() {
	rdb = redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "",
		DB:       0,
	})
}
func main() {
	ctx := context.Background()
	//err := rdb.Set(ctx, "name2", "牛逼得很啊", 0).Err()
	//if err != nil {
	//	panic(err)
	//}
	//fmt.Println()
	//val, err := rdb.Get(ctx, "name2").Result()
	//fmt.Println(val)
	//GetSet(打印key的旧值)
	//setNx(如果值不存在就会设置)
	//val_m, err := rdb.MGet(ctx, "name", "name2").Result()
	//if err != nil {
	//	panic(err)
	//}
	//fmt.Println(val_m)
	// Incr函数每次加一
	val, err := rdb.Incr(ctx, "key").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("最新值", val)

	// IncrBy函数，可以指定每次递增多少
	valBy, err := rdb.IncrBy(ctx, "key", 2).Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("最新值", valBy)

	// IncrByFloat函数，可以指定每次递增多少，跟IncrBy的区别是累加的是浮点数
	valFloat, err := rdb.IncrByFloat(ctx, "key1", 2.2).Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("最新值", valFloat)
	// 删除key
	rdb.Del(ctx, "key")

	// 删除多个key, Del函数支持删除多个key
	res := rdb.Del(ctx, "key1", "key2", "key3").Err()
	if res != nil {
		panic(err)
	}

}
